from twisted.internet import reactor, defer
from twisted.python import threadable
threadable.init(1)
import sys, time

from twisted.internet.threads import deferToThread
deferred = deferToThread.__get__
 
## example code
def print_(result):
    print result
    reactor.stop()

def running():
    "Prints a few dots on stdout while the reactor is running."
    sys.stdout.write("."); sys.stdout.flush()
    reactor.callLater(.1, running)


@deferred
def sleep(sec):
    "A blocking function magically converted in a non-blocking one."
    print 'start sleep %s' % sec
    time.sleep(sec)
    print '\nend sleep %s' % sec
    return "ok"

if __name__ == "__main__":
    sleep(2).addBoth(print_)
    reactor.callLater(.1, running)
    reactor.callLater(3, reactor.stop)
    reactor.run()